/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package View;

import controller.MotivoController;
import exception.DuplicateConstraintException;
import exception.RemoveConstraintException;
import java.io.Serializable;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.faces.event.ActionEvent;
import javax.inject.Inject;
import javax.inject.Named;
import model.entidades.Motivo;
import org.apache.myfaces.extensions.cdi.core.api.scope.conversation.Conversation;
import org.apache.myfaces.extensions.cdi.core.api.scope.conversation.ConversationScoped;

/**
 *
 * @author helton
 */
@Named
@ConversationScoped
public class MotivoView implements View, Serializable {

    @Inject
    MotivoController controller;
    @Inject
    Conversation conversation;
    private Motivo motivo;
    private List<Motivo> motivos;

    @Override
    @PostConstruct
    public void init() {
        motivo = new Motivo();
    }

    @Override
    public void closeConversation(ActionEvent event) {
        conversation.close();
    }

    @Override
    public String actionNovo() {
        motivo = new Motivo();
        return "cadastrarMotivo";
    }

    @Override
    public String actionSalvar() throws DuplicateConstraintException {
        motivo.setDescricao(motivo.getDescricao().toUpperCase());
        if (motivo.getId() == null) {
            controller.insert(motivo);
        } else {
            controller.update(motivo);
        }
        motivos = null;
        return actionListar();
    }

    @Override
    public String actionListar() {
        return "listarMotivo";
    }

    @Override
    public void actionRemover() throws RemoveConstraintException {
        controller.remove(motivo);
        motivos = null;
    }

    public Motivo getMotivo() {
        return motivo;
    }

    public void setMotivo(Motivo motivo) {
        this.motivo = motivo;
    }

    public List<Motivo> getMotivos() {
        if (motivos == null) {
            motivos = controller.getAll();
        }
        return motivos;
    }

    public void setMotivos(List<Motivo> motivos) {
        this.motivos = motivos;
    }
}
